% 测试全连接层
function test_fully_connected()
    % 创建模型实例
    model = model_cifar10();
    
    % 创建测试输入，模拟global_average_pooling的输出
    % 根据参数：
    % Scale: 0.010676
    % Zero point: -128
    input = int8(zeros(1, 128));  % 初始化为0
    
    % 设置一些合理的值，考虑量化参数
    % 确保输入在合理范围内
    input = int8(-128 + randi([0, 255], [1, 128]));  % 确保值在[-128, 127]范围内
    
    % 打印输入信息
    fprintf('Input debug:\n');
    fprintf('  Shape: %s\n', mat2str(size(input)));
    fprintf('  Range: [%d, %d]\n\n', min(input(:)), max(input(:)));
    
    % 调用fully_connected函数
    output = model.fully_connected(input);
    
    % 验证输出维度
    assert(isequal(size(output), [1, 10]), 'Incorrect output dimensions');
    
    % 验证输出类型
    assert(isa(output, 'int8'), 'Output should be int8');
    
    % 验证输出范围
    assert(all(output(:) >= -128 & output(:) <= 127), 'Output values out of int8 range');
    
    % 打印结果
    fprintf('Output shape:\n');
    fprintf('     %d   %d\n\n', size(output));
    
    fprintf('Output range:\n');
    fprintf('   %d   %d\n\n', min(output(:)), max(output(:)));
end 